package cn.tedu.truetaste.mapper;

import cn.tedu.truetaste.pojo.entity.Shop;
import cn.tedu.truetaste.pojo.vo.ShopStandardVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 处理购物车数据的Mapper接口
 *
 * @author java@tedu.cn
 * @version 0.0.1
 */
@Repository
public interface ShopMapper {

    //判断(查询)当前登录用户购物车中是否包含指定的sku商品
//    Shop selectExistsShop(@Param("userId") Long userId,
//                             @Param("skuId") Long skuId);

    Shop selectExistsShop(@Param("openId") String openId,
                          @Param("skuId") Long skuId);

    // 新增sku信息到购物车
    int saveShop(Shop shop);

    // 修改购物车中的sku商品数量
    int updateNumById(Shop shop);

    ShopStandardVO getStandardByUserId(Long userId);

    // 根据当前登录用户id查询这个用户购物车中的sku信息
    List<ShopStandardVO> selectShopsByUserId(String openId);

    // 根据用户选择中的一个或多个id删除购物车中商品(支持批量删除)
    int deleteShopsByIds(Long[] ids);

    // 清空指定用户购物车中所有sku商品
    int deleteShopsByUserId(String openId);

    // 根据用户Id和skuId删除购物车中商品
    int deleteShopByUserIdAndSkuId(Shop shop);

    /**
     * 插入购物车数据
     *
     * @param shop 购物车数据
     * @return 受影响的行数
     *//*
    int insert(Shop shop);*/
    /**
     * 批量插入购物车数据
     *
     * @param shopList 购物车列表
     * @return 受影响的行数
     *//*
    int insertBatch(List<Shop> shopList);
    *//**
     * 根据id删除购物车数据
     * @param id
     * @return 受影响的行数
     *//*
    int deleteById(Long id);
    *//**
     * 根据id批量删除购物车数据
     * @param id
     * @return  受影响行数
     *//*
    int deleteByIds(Long[] id);
    *//**
     *  修改购物车数据
     *
     * @param shop 购物车数据
     * @return  受影响行数
     *//*
    int update(Shop shop);
    *//**
     * 根据购物车名称统计数据的数量
     *
     * @param name 购物车名称
     * @return 匹配名称的购物车数据的数量
     *//*
    int countByName(String name);
    *//**
     * 统计非某id但名称匹配的购物车数据的数量，用于检查是否存在其它数据使用了相同的名称
     * @param id 购物车id
     * @param name 购物车名称
     * @return 匹配名称但不匹配id的数据的数量
     *//*
    int countByNameAndNotId(@Param("id") Long id, @Param("name") String name);
    *//**
     * 根据id查询购物车数据详情
     *
     * @param id 购物车id
     * @return 匹配的购物车数据详情，如果没有匹配的数据，则返回null
     *//*
    ShopStandardVO getStandardById(Long id);
    *//**
     * 查询购物车数据列表
     *
     * @return 购物车数据列表
     *//*
    List<ShopListItemVO> list();*/

}
